package server.gui;

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.Vector;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextPane;
import javax.swing.border.EmptyBorder;

import model.Usuario;
import server.services.UsuarioService;

@SuppressWarnings("serial")
public class PantallaEnviarMensaje extends JFrame {

	private JPanel contentPane;
	private UsuarioService service;
	private JTextPane textPaneMensaje;
	private JList<Usuario> listUsuariosAEnviar;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					PantallaEnviarMensaje frame = new PantallaEnviarMensaje();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public PantallaEnviarMensaje() {
		service = new UsuarioService();
		setTitle("Enviar mensaje");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 510, 456);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblEnviarA = new JLabel("Enviar a...");
		lblEnviarA.setFont(new Font("Tahoma", Font.PLAIN, 15));
		lblEnviarA.setBounds(20, 11, 114, 31);
		contentPane.add(lblEnviarA);
		
		Vector<Usuario> vector = null;
		try {
			vector = new Vector(service.conectados());
		} catch (Exception e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(this, "No se pudo traer a los usuarios conectados\n" + e.getMessage());
		}
		
		listUsuariosAEnviar = new JList<Usuario>(vector);
		listUsuariosAEnviar.setBounds(20, 41, 142, 175);
		contentPane.add(listUsuariosAEnviar);
		
		JButton btnSeleccionarTodos = new JButton("Seleccionar todos");
		btnSeleccionarTodos.setBounds(244, 38, 164, 23);
		contentPane.add(btnSeleccionarTodos);
		
		JButton btnDeselecionarTodos = new JButton("Deselecionar todos");
		btnDeselecionarTodos.setBounds(244, 91, 164, 23);
		contentPane.add(btnDeselecionarTodos);
		
		textPaneMensaje = new JTextPane();
		textPaneMensaje.setBounds(20, 292, 447, 115);
		contentPane.add(textPaneMensaje);
		
		JButton btnEnviar = new JButton("Enviar");
		btnEnviar.setFont(new Font("Tahoma", Font.PLAIN, 16));
		btnEnviar.setBounds(20, 250, 114, 31);
		btnEnviar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String mensaje = textPaneMensaje.getText();
				List<Usuario> usuarios = listUsuariosAEnviar.getSelectedValuesList();
				enviar(usuarios, mensaje);
			}
		});
		contentPane.add(btnEnviar);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(10, 237, 474, 2);
		contentPane.add(separator);
	}
	
	private void enviar(List<Usuario> usuarios, String mensaje) {
		for(Usuario usuario : usuarios) {
			service.enviarMensaje(usuario, mensaje);
		}
	}
}
